查看原文
其他

Android 性能优化必知必会(2020-4-27)

Gracker Android Performance 2021-11-05

这篇文章记录了 Android 性能优化所必须掌握的知识,涵盖性能优化相关的方方面面(当然如果读者同学你也有很棒的私藏文章,也可以加入到这篇文章里面).部分文章可能需要特殊的技巧才能看到,希望你已经掌握了这一部分技巧。另外附送Android 开发者学习路线(2020 版本)


由于微信设置,部分链接没法直接跳转,点击原文 可以查看完整版本,欢迎自荐和交流


这篇文章会持续更新,最新更新时间:2020-04-27

优化心得和经验

  1. 系列视频 Android Performance Patterns

  2. 给 App 提速:Android 性能优化总结

  3. 移动端性能监控方案 Hertz

  4. Android 性能优化后续

  5. Android性能优化之虚拟机调优

  6. Android UI 性能优化

  7. Performance Tips

  8. 美团外卖Android Lint代码检查实践

  9. Android battery and memory optimizations - Google I/O 2016

  10. Google 免费的公开课 : Android Performance

  11. Android APP 性能优化的一些思考

  12. 使用Android Studio和MAT进行内存泄漏分析

  13. 历时1年,上百万行代码!首次揭秘手淘全链路性能优化(上)

  14. 别催更啦!手淘全链路性能优化下篇

  15. Android开发高手课

  16. 手Q Android缓存监控与优化实践

  17. 微信读书(Android)阅读引擎卡顿监控测试

  18. Data science for mobile OS system optimization

  19. Matrix TraceCanary – 初恋·卡顿

  20. Matrix IOCanary – I/O 质量监控

  21. 见微知著,Google Photos Web UI 完善之旅

  22. 微信 Android 终端内存优化实践

  23. 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」

  24. 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%

  25. 抖音包大小优化-资源优化

  26. 性能问题终结者”Olympic

  27. 美团Java线程池实现原理及其在美团业务中的实践

  28. Probe:Android线上OOM问题定位组件

响应速度

  1. Android App 启动优化全记录

  2. Optimizing Boot Times

  3. Android 中如何计算 App 的启动时间

  4. Google 官方文档 - Launch-time performance

  5. 都9102年了,Android 冷启动优化除了老三样还有哪些新招?

  6. 支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能

  7. Redex 初探与 Interdex:Andorid 冷启动优化

  8. Android性能优化笔记(一)——启动优化

  9. 抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%

  10. 爱奇艺Android客户端启动优化与分析

  11. 深入探索Android启动速度优化

流畅度

  1. Android 中的卡顿丢帧原因概述 - 方法论

  2. Android 中的卡顿丢帧原因概述 - 系统篇

  3. Android 中的卡顿丢帧原因概述 - 应用篇

  4. Android 平台应用宝和讯飞输入法无障碍服务导致的全局卡顿分析

  5. Evaluating Performance

  6. Understanding Systrace

  7. Using ftrace

  8. Identifying Capacity-Related Jank

  9. Identifying Jitter-Related Jank

  10. 那些年我们用过的显示性能指标

  11. Slow rendering

  12. Android 流畅度检测原理简析

  13. Android JankTracker 原理解析

  14. Android 界面性能调优手册

  15. App流畅度优化:利用字节码插桩实现一个快速排查高耗时方法的工具

内存

  1. Android 中低内存对性能的影响

  2. Low RAM Configuration

  3. Linux Swap 与 Zram 详解

  4. Android 加载不同 DPI 资源与内存消耗间的关系

  5. ZRAM SWAP 内存管理讲解

  6. Android OOM 案例分析

  7. Android 代码内存优化建议-Android 资源篇

  8. Android 代码内存优化建议-Android 官方篇

  9. Android 代码内存优化建议-Java 官方篇

  10. Android 内存优化之一:MAT 使用入门

  11. Android 内存优化之二:MAT 使用进阶

  12. Android 内存优化之三:打开 MAT 中的 Bitmap 原图

  13. Android 代码内存优化建议-OnTrimMemory 优化

  14. Android LowMemoryKiller原理分析

  15. Android 匿名共享内存(Ashmem)原理

  16. 郝健: Linux内存管理学习笔记-第1节课

  17. 郝健: Linux内存管理学习笔记-第2节课

  18. 郝健: Linux内存管理学习笔记-第3节课

  19. 郝健: Linux内存管理学习笔记-第4节课

  20. 郝健: Linux内存管理学习笔记-第5节课

  21. 郝健: Linux内存管理学习笔记-第6节课

  22. Manage your app’s memory

  23. Overview of memory management

  24. Linux 查看进程消耗内存情况总结

  25. 一次过程Android平台native heap内存泄露的追查过程

  26. 浅谈Cache Memory

  27. Bitmap优化详谈

  28. 探索 Android 内存优化方法

  29. 看完这篇文章,解决 APP 中 90 % 的内存异常问题

  30. 实践App内存优化:如何有序地做内存分析与优化

  31. 谈谈内存压缩那些事

  32. dumpsys meminfo 的原理和应用

图形栈

  1. Android display pipeline本身以及进程调度

  2. Android 中的 Hardware Layer 详解

  3. Android 硬件加速原理与实现简介

  4. Android 图形系统概述

  5. Choreographer 原理

  6. SurfaceFlinger 启动篇

  7. SurfaceFlinger 绘图篇

  8. Android 应用程序 UI 硬件加速渲染技术简要介绍和学习计划

  9. Android 应用程序 UI 硬件加速渲染环境初始化过程分析

  10. Android 应用程序 UI 硬件加速渲染的预加载资源地图集服务(Asset Atlas Service)分析

  11. Android 应用程序 UI 硬件加速渲染的 Display List 构建过程分析

  12. Android 应用程序 UI 硬件加速渲染的 Display List 渲染过程分析

  13. Android 应用程序 UI 硬件加速渲染的动画执行过程分析

  14. Android硬件加速(一)- 理解Android硬件加速原理的小白文

  15. Android硬件加速(二)- RenderThread与OpenGL GPU渲染

  16. Android中的GraphicBuffer同步机制-Fence

  17. Android P 图形显示系统(一)硬件合成HWC2

  18. Android P 图像显示系统(二)GraphicBuffer和Gralloc分析

  19. Android P 图像显示系统(三)Android HWUI 绘制流程

  20. Android P 图形显示系统(四) Android VirtualDisplay解析

  21. Android P 图形显示系统(五) 上层Client和SurfaceFlinger的交互

  22. Android P 图形显示系统(六) SurfaceFlinger合成流程(一)

  23. Android P 图形显示系统(七) SurfaceFlinger合成流程(二)

  24. Android P 图形显示系统(八) SurfaceFlinger合成流程(三)

  25. Android P 图形显示系统(九) Android图形显示子系统概述

  26. Android P 图形显示系统(十) BufferQueue(一)

  27. Android P 图形显示系统(十一) BufferQueue(二)

  28. Android P 图形显示系统(十二) BufferQueue(三)

  29. 渲染流水线中的光栅化1

  30. 渲染流水线中的光栅化2

虚拟机

  1. 带你了解 Android 10 中的 art

  2. 带你了解 Android 10 中的 art

  3. 带你了解 Android 10 中的 art

  4. 带你了解 Android 10 中的 art

  5. 带你了解 Android 10 中的 art

  6. ART and Dalvik

  7. Android 8.0 ART Improvements

  8. Dalvik bytecode

  9. Dalvik Executable format

  10. Dalvik Executable instruction formats

  11. Constraints

  12. Configuring ART

  13. Debugging ART Garbage Collection

  14. Implementing ART Just-In-Time (JIT) Compiler

  15. 深入学习Android:虚拟机&运行时

  16. Android性能优化之虚拟机调优

  17. Android上的Dalvik虚拟机

  18. Android上的ART虚拟机

  19. Android ART 并行拷贝垃圾回收

  20. Android ART dex2oat 浅析

系统框架

  1. Task Snapshots

  2. Android Input 子系统:Input 进程的创建,监听线程的启动

  3. Android Input 子系统:Input 事件的产生、读取和分发,InputReader、InputDispatcher

  4. EventHub 与设备、Input 事件的交互

  5. Android 消息机制,从Java 层到 Native 层剖析

  6. 理解 Android Binder 机制(1/3):驱动篇

  7. 理解 Android Binder 机制(2/3):C++ 层

  8. 理解 Android Binder 机制(3/3):Java 层

  9. Android Bander 设计与实现 - 设计篇

  10. 四大组件之综述

  11. 四大组件之 ActivityRecord

  12. 四大组件之 ContentProviderRecord

  13. 四大组件之 BroadcastRecord

  14. 四大组件之 ServiceRecord

  15. 简述 Activity 与 Window 关系

  16. 理解 Android Context

  17. 理解 Application 创建过程

  18. 以 Window 视角来看 startActivity

  19. WMS—启动窗口(StartingWindow)

  20. WMS—启动过程

  21. 写给 Android 应用工程师的 Binder 原理剖析

  22. Binder系列—开篇

  23. Binder系列1—Binder Driver初探

  24. Binder系列2—Binder Driver再探

  25. Binder系列3—启动ServiceManager

  26. Binder系列4—获取ServiceManager

  27. Binder系列5—注册服务(addService)

  28. Binder系列6—获取服务(getService)

  29. Binder系列7—framework层分析

  30. Binder系列8—如何使用Binder

  31. Binder系列9—如何使用AIDL

  32. Binder系列10—总结

  33. 彻底理解Android Binder通信架构

  34. Android Bander设计与实现 - 设计篇

  35. Binder学习指南

  36. 你知道android的MessageQueue.IdleHandler吗?

  37. 聊一聊Android的消息机制

  38. 聊聊 APK (一) ——直接运行 Dex文件的黑魔法

  39. 聊聊 APK(二)——Dex 热修复与 Classpath

  40. 聊聊 APK(三)—— Android 资源编译的秘密

  41. 卢半山 - 反思|Android 事件拦截机制的设计与实现

  42. 卢半山 - Binder 内存拷贝的本质和变迁

  43. 卢半山 - AIDL 中 inout 的本质

  44. 卢半山 - Binder 的异常机制

  45. 卢半山 - Binder 世界中的代理机制(上)

  46. 卢半山 - Binder 概述

  47. Android 系统架构 —— Choreographer 的工作机制

  48. Looper的wake机制升级

  49. Android10.0 Binder通信原理(一)Binder、HwBinder、VndBinder概要

  50. Android10.0 Binder通信原理(二)-Binder入门篇

  51. Android10.0 Binder通信原理(三)-ServiceManager篇

  52. Android10.0 Binder通信原理(四)-Native-C\C++实例分析

  53. Android10.0 Binder通信原理(五)-Binder驱动分析

  54. Android10.0 Binder通信原理(六)-Binder数据如何完成定向打击

  55. Android10.0 Binder通信原理(七)-Framework binder示例

  56. Android10.0 Binder通信原理(八)-Framework层分析

  57. Android10.0 Binder通信原理(九)-AIDL Binder示例

  58. Android10.0 Binder通信原理(十)-AIDL原理分析-Proxy-Stub设计模式

稳定性

  1. 彻底理解安卓应用无响应机制

  2. 应用与系统稳定性第一篇—ANR问题分析的一般套路

  3. 应用与系统稳定性第二篇—ANR的监测与信息采集

  4. 应用与系统稳定性第三篇—FD泄露问题漫谈

  5. 应用与系统稳定性第四篇—单线程导致的空指针问题分析

  6. 应用与系统稳定性第五篇—Watchdog原理和问题分析

  7. 应用与系统稳定性第六篇—JVM垃圾回收之finalize执行时引起timed out 闪退分析

  8. 应用与系统稳定性第七篇— 用Asan 提前解决NDK疑难crash

功耗

  1. 能感知功耗的Linux调度器(EAS)

  2. Android 功耗改进

进程管理

  1. cpuset

  2. cgroup

  3. Android 进程调度之 adj 算法

  4. Linux 进程管理(一)

  5. Linux 进程管理(二)–fork

  6. Linux 进程 pid 分配法

  7. 收费培训视频 打通 Linux 脉络系列:进程、线程和调度

  8. Android 系统中的进程管理:进程的创建

  9. Android 系统中的进程管理:进程的优先级

  10. Android 系统中的进程管理:内存的回收

  11. Android系统上的进程管理:进程的调度

  12. Android 系统启动:init 进程与 init 语言

  13. Android 进程保活招式大全

  14. 进程和线程

  15. 通过线程提升性能

  16. 解读Android进程优先级ADJ算法

  17. 杂谈Android线程优先级

IO

  1. Android 性能优化 —— IO 的监控与优化

  2. 从内核文件系统看文件读写过程

  3. 认真分析mmap:是什么 为什么 怎么用

调试工具

  1. 另一个 Android 性能剖析工具——simpleperf

  2. Simpleperf

  3. 如何调试 Android Framework

  4. 如何调试 Android Native Framework

  5. Catapult 项目

  6. 手把手教你使用Systrace(一)

  7. 手把手教你使用Systrace(二)——锁优化

  8. 使用Android Studio和MAT进行内存泄漏分析

  9. Systrace 简介

  10. Systrace 基础知识 - Systrace 预备知识

  11. Systrace 基础知识 - Why 60 fps ?

  12. Systrace 基础知识 - SystemServer 解读

  13. Systrace 基础知识 - Input 解读

  14. Systrace 基础知识 - Vsync 产生与工作机制解读

  15. Systrace 基础知识 - Vsync-App :基于 Choreographer 的渲染机制详解

  16. Systrace 基础知识 - MainThread 和 RenderThread 解读

  17. Systrace 基础知识 - Binder 和锁竞争解读

  18. Systrace 基础知识 - Triple Buffer 解读

  19. Systrace 基础知识 - CPU Info 解读

  20. Tracing Window Transitions

  21. Android性能问题分析之bugreport

  22. 腾讯 Apm 框架 Matrix 源码阅读 - gradle插件

  23. 腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 架构解析

  24. 腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 AnrTracer

  25. 腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 StartupTracer

  26. 腾讯 Apm 框架 Matrix 源码阅读 - TracePlugin 之 FrameTracer

  27. 腾讯 Apm 框架 Matrix 源码阅读 - 架构解析

硬件相关

  1. Flash Wear Management in Android Automotive

  2. Cortex-A75 和 Cortex-A55

  3. CPU Utilization is Wrong

编程语言

  1. 探索 Java 隐藏的开销

  2. Kotlin 中文文档

  3. Java多态在android中的实现

  4. Cancellation and Exceptions in Coroutines

    1. Coroutines: First things first

    2. Cancellation in coroutines

    3. Exceptions in Coroutines

    4. Coroutines & Patterns for work that shouldn’t be cancelled

  5. 彻底理解引用在 Android 和 Java 中的工作原理

Linux

  1. 内核探索:Regmap 框架:简化慢速 I/O 接口优化性能

  2. 嵌入式 Linux 启动时间优化

  3. Linux文件系统预读的情景分析

  4. 使用blktrace统计磁盘块I/O访问频率

  5. Linux系统调用(syscall)原理

  6. 浅墨: 聊聊Linux IO(上)

  7. 浅墨: 聊聊Linux IO(中)——Linux内核中的IO栈

  8. 浅墨: 聊聊Linux IO(下)

  9. 郭健:deadline调度器之(一):原理

  10. 郭健:Deadline调度器之(二):细节和使用方法

  11. 郭健:Linux内存模型——平坦、非连续与稀疏

  12. linux内核分析——CFS(完全公平调度算法)

  13. 从几个问题开始理解CFS调度器

  14. CFS调度器(1)-基本原理

  15. CFS调度器(2)-源码解析

  16. CFS调度器(3)-组调度

  17. CFS调度器(4)-PELT(per entity load tracking)

  18. CFS调度器(5)-带宽控制

  19. CFS调度器(6)-总结

  20. 关于线程和I/O模型的极简知识

  21. TRIM:提升磁盘性能,缓解Android卡顿

  22. LWN 456904: 避免磁盘回写(writeback),抑制(throttling)缓存(page cache)写入

  23. LWN 384093: 有关 “回写”(writeback)的问题讨论

  24. LWN 211505: 避免和解决内存碎片化

  25. SMP Primer for Android

  26. 内存分配1 - 空闲链表和内存池

  27. 内存分配2 - Buddy系统的原理

  28. 内存分配3 - Linux中Buddy系统的实现

  29. Linux中的内存压缩

  30. 研究Linux内核的乐趣

  31. linux IO Block layer 解析

  32. CFS任务的负载均衡(框架篇)

  33. 一张图读懂内存反碎片化

  34. 浅谈新型非易失存储

  35. Linux devfreq framework 剖析

  36. 内存泄漏(增长)火焰图

  37. Linux 系统性能评测基准系统配置及其原理

  38. Cgroups 与 Systemd

Flutter

  1. 深入 Flutter 的高性能图形渲染

  2. 跨平台技术演进及Flutter未来

  3. 跨平台技术趋势及字节跳动 Flutter 架构实践

  4. Flutter 的性能测试和理论

  5. 深入理解 Flutter 多线程

  6. 深入理解Flutter引擎启动

  7. Flutter渲染机制—UI线程

  8. Flutter渲染机制—GPU线程

Fuchsia

  1. 许中兴博士演讲:Fuchsia OS 简介

技术之外的思考

  1. 我到底有多么努力

  2. 工作以来的一些感悟

  3. 如何自学Android?

  4. 技术人最重要的能力是什么?

  5. 浅谈软件工程师的代码素养

  6. 陆奇:除了好代码,工程师怎样才算优秀?

  7. 别让自己“墙”了自己

  8. 100% 成功率的 offer 收割机是怎样练成的?

  9. 使用简单的逻辑方法进行独立思考

面试题

  1. Android 2018 最新面试题

  2. 如何衡量一个Android应用开发人员的能力

  3. 2018Android面试总结

  4. Android2017-2018最新面试题(3-5年经验个人面试经历)

  5. Android 开发工程师面试指南

  6. 阿里电话面试面试题总结,附答案!

  7. 阿里巴巴面试题

  8. 美团面试题

  9. 豌豆荚三面试题

  10. 蜻蜓FM面试题

  11. 新浪微博面试题

  12. 网易杭研面试题

  13. 为什么想来我们公司工作?- 面试常见问题解析

  14. 今日头条大佬十年面试了 2000 人,总结了这 5 点

  15. 2019 年美团点评高级 Android 开发寒冬跳槽涨薪经验掏心分享

  16. 如何回答性能优化的问题,才能打动阿里面试官?

  17. 2019.07 Android 面试真题集锦

  18. 技术面试中面试官怎么考察候选人?

  19. 给扔物线 HenCoder Plus 学员的一次分享文字版

  20. 快手,字节跳动,百度,美团Offer之旅

  21. 美帝面试二三事

本文其他地址

由于博客留言交流不方便,点赞或者交流,可以移步本文的知乎或者掘金页面
知乎 - Android 性能优化必知必会

关于我 && 博客

  1. 关于我 , 非常希望和大家一起交流 , 共同进步 .

  2. 博客内容导航

  3. 优秀博客文章记录 - Android 性能优化必知必会


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存